package main

import (
	"fmt"
	"reflect"
	"strings"
)

// 获取函数名称
func getFunctionName(fn interface{}) string {
	fnType := reflect.TypeOf(fn)
	if fnType.Kind() != reflect.Func {
		return "Not a function"
	}
	// 获取函数类型的字符串表示
	fnString := fnType.String()
	// 提取函数名
	parts := strings.Split(fnString, ".")
	if len(parts) > 1 {
		return parts[len(parts)-1]
	}
	return fnString
}

func main() {

	// MergeSort(nums)
	// SelectSort(nums)
	// BubbleSort(nums)
	// InsertSort(nums)
	// QuickSort(nums)

	sortFuncs := map[string]func([]int){
		"MergeSort":   MergeSort,
		"SelectSort":  SelectSort,
		"BubbleSort":  BubbleSort,
		"InsertSort":  InsertSort,
		"QuickSort":   QuickSort,
		"QuickSortV2": QuickSortV2,
	}

	for name, fun := range sortFuncs {
		nums := []int{1, 3, 2, 4, 5, 6, 7, 8, 9, 10}
		fun(nums)
		fmt.Printf("排序算法: %s \t结果: %v\n", name, nums)
	}

	c := 'A'
	strings.ToLower(string(c))

}
